指针和引用

指针可以简化一些C++编程任务的执行,还有一些任务,如动态内存分配,没有指针是无法执行的。

每一个变量都有一个内存地址,每个内存位置都定义了可使用连字号(&)运算符访问的地址,它表示了在内存中的一个地址。

1
2
3
4
5
6
7
8
9
10
11
int main(){
int var1;
chat var2[10];

cout << "var1 变量的地址:";
cout << &var1 << endl;

cout << "var2 变量的地址:";
cout << &var2 << endl;
return 0;
}

通过以上,了解了审核是内存地址以及如何访问它。接下来我们看看什么是指针。

什么是指针?

指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址。

1
2
3
4
int    *ip;    /* 一个整型的指针 */
double *dp; /* 一个 double 型的指针 */
float *fp; /* 一个浮点型的指针 */
char *ch; /* 一个字符型的指针 */

所有指针的值的实际数据类型,不管是整形,浮点型,字符型,还是其他数据类型。都是一样的,都是一个代表内存地址的长的十六进制数。

不同数据类型的指针之间唯一的不同是,指针所指向的变量或常量的数据类型不同。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>

using namespace std;

int main ()
{
int var = 20; // 实际变量的声明
int *ip; // 指针变量的声明

ip = &var; // 在指针变量中存储 var 的地址

cout << "Value of var variable: ";
cout << var << endl;

// 输出在指针变量中存储的地址
cout << "Address stored in ip variable: ";
cout << ip << endl;

// 访问指针中地址的值
cout << "Value of *ip variable: ";
cout << *ip << endl;

return 0;
}
1
ip = &var 即: '*ip'  和 var 的值相等

一. 指针的算数运算

指针是一个用数值表示的地址。因此,您可以对指针执行算术运算。

可以对指针进行四种算术运算:++、—、+、-。

C++ 指针的算术运算

int 是4个字节. char是一个字节